package com.linkwechat.common.vo.qw;

import lombok.Data;

import java.util.List;

/**
 * @Author 王君平
 * @Date 2024/5/28 14:44
 * @Description https://developer.work.weixin.qq.com/document/path/90603
 */
@Data
public class EnterprisesPermanentAuthVO {
    private Integer errcode;//因历史原因，该接口在调用失败时才返回errcode。没返回errcode视为调用成功
    private String errmsg;
    private String access_token;//授权方（企业）access_token  代开发自建应用安装时不返回。
    private Integer expires_in;//s 授权方（企业）access_token超时时间（秒）。代开发自建应用安装时不返回。
    private String permanent_code;//企业微信永久授权码
    private String dealer_corp_info;//其实是一个object
    private auth_corp_info auth_corp_info;
    private auth_info auth_info;
    private auth_user_info auth_user_info;//授权管理员的信息，可能不返回
    private register_code_info register_code_info;//推广二维码安装相关信息，扫推广二维码安装时返回。成员授权时暂不支持。（注：无论企业是否新注册，只要通过扫推广二维码安装，都会返回该字段）
    private String state;//安装应用时，扫码或者授权链接中带的state值。详见state说明
    @Data
    public static class auth_corp_info {
        private String corpid;//授权方企业微信id
        private String corp_name;
        private String corp_type;
        private String corp_square_logo_url;
        private Integer corp_user_max;
        private String corp_full_name;
        private Long verified_end_time;//认证到期时间
        private String subject_type;
        private String corp_wxqrcode;
        private String corp_scale;
        private String corp_industry;
        private String corp_sub_industry;
    }

    @Data
    public static class auth_info {
        private List<agent> agent;//只会返回一个
    }

    @Data
    public static class agent {
        private String agentid;//授权方应用ID
        private String name;
        private String round_logo_url;
        private String square_logo_url;
        private String appid;//忽略
        private String auth_mode;//授权模式，0为管理员授权；1为成员授权
        private Boolean is_customized_app;//是否为代开发自建应用
        private Boolean auth_from_thirdapp;
        private privilege privilege;
        private shared_from shared_from;//共享了应用的企业信息，仅当由企业互联或者上下游共享应用触发的安装时才返回
    }

    @Data
    public static class privilege {
        /**
         * 权限等级。
         * 1:通讯录基本信息只读
         * 2:通讯录全部信息只读
         * 3:通讯录全部信息读写
         * 4:单个基本信息只读
         * 5:通讯录全部信息只写
         */
        private Integer level;
        private List<Integer> allow_party;//应用可见范围（部门）
        private List<String> allow_user;//应用可见范围（成员）
        private List<Integer> allow_tag;//应用可见范围（标签）
        private List<Integer> extra_party;//额外通讯录（部门）
        private List<String> extra_user;//额外通讯录（成员）
        private List<Integer> extra_tag;//额外通讯录（标签）
    }

    @Data
    public static class shared_from {
        private String corpid;//共享了应用的企业信息，仅当企业互联或者上下游共享应用触发的安装时才返回
        private Integer share_type;//共享了途径，0表示企业互联，1表示上下游

    }

    @Data
    public static class auth_user_info {
        private String userid;//授权管理员的userid，可能为空
        private String open_userid;//授权管理员的open_userid，可能为空
        private String name;//授权管理员的name，可能为空
        private String avatar;//授权管理员的头像url，可能为空

    }

    @Data
    public static class register_code_info {
        private String register_code;
        private String template_id;
        private String state;
    }


}
